<?php
/**
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	ssh\interfaces
 * @category	ssh, state
 */
namespace rpo\ssh\interfaces;

use rpo\base\String;

/**
 * Interface para uma conexão SSH
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	ssh\interfaces
 * @category	ssh, state
 */
interface ISSHConnection {
	/**
	 * Autentica um usuário
	 * @param ISSHAuthentication $auth
	 * @return boolean
	 */
	public function authenticate( ISSHAuthentication $auth );

	/**
	 * Executa um comando no servidor remoto
	 * @param String $command
	 * @return boolean
	 */
	public function execute( String $command );

	/**
	 * Recupera a fingerprint do servidor
	 * @return String
	 */
	public function getFingerprint();

	/**
	 * Abre uma nova conexão
	 * @param String $host
	 * @param integer $port
	 * @return boolean
	 */
	public function open( String $host , $port );

	/**
	 * Modifica o estado da conexão
	 * @param ISSHState $state
	 */
	public function changeState( ISSHState $state );
}